package com.night.icm.model.business;

import com.night.icm.common.utils.SexType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * StudentCreditRecordDTO
 *
 * @author Liao ZhiYong
 * @date 2020/3/21
 */
@ApiModel(description = "学生学业学分记录")
@Data
public class StudentCreditRecordDTO {

    @ApiModelProperty(position = 110, value = "学生学业学分记录id，自增")
    private String id;

    @ApiModelProperty(position = 140, value = "学院名称")
    private String academyName;

    @ApiModelProperty(position = 190, value = "行政班级，如计算机163班")
    private String className;

    @ApiModelProperty(position = 180, value = "学生id")
    private String studentId;

    @ApiModelProperty(position = 170, value = "学生学号")
    private String studentCode;

    @ApiModelProperty(position = 180, value = "学生姓名")
    private String studentName;

    @ApiModelProperty(position = 180, value = "学生性别")
    private SexType gender;

    @ApiModelProperty(position = 180, value = "学生入学年份，所属年级2016级")
    private Integer grade;

    @ApiModelProperty(position = 130, value = "已修必修学分：所有必修课 REQUIRED_COURSE")
    @NotNull
    private Double compulsoryCredit;

    @ApiModelProperty(position = 140, value = "已修学科基础选修: 学科基础课/限选课")
    @NotNull
    private Double subjectBasedElective;

    @ApiModelProperty(position = 150, value = "已修专业选修：专业课/限选课 + 专业课/任选课")
    @NotNull
    private Double professionElective;

    @ApiModelProperty(position = 160, value = "已修公共选修：公共课/任选课")
    @NotNull
    private Double publicElective;

    @ApiModelProperty(position = 170, value = "已修实践学分：课程设计等")
    @NotNull
    private Double practiceCredit;

    @ApiModelProperty(position = 180, value = "已修创新分")
    @NotNull
    private Double innovationScore;

    @ApiModelProperty(position = 190, value = "已修毕业实习")
    @NotNull
    private Double graduationInternship;

    @ApiModelProperty(position = 200, value = "已修毕业论文")
    @NotNull
    private Double graduationThesis;

    @ApiModelProperty(position = 210, value = "已修学分合计")
    @NotNull
    private Double total;

    @ApiModelProperty(position = 300, value = "学生毕业最低学分要求")
    private AcademicProgressDTO academicProgress;

    @ApiModelProperty(position = 360, value = "附件列表")
    private List<SystemFileDTO> files;

    @ApiModelProperty(position = 500, value = "附件ID列表")
    private List<String> fileIds;
}